int findJudge(int N, int** trust, int trustSize, int* trustColSize) {
    int* trustCounts = (int*)malloc(sizeof(int) * (N + 1));
    int* trustedByCounts = (int*)malloc(sizeof(int) * (N + 1));
    
    // 初始化统计数组
    for (int i = 0; i <= N; i++) {
        trustCounts[i] = 0;
        trustedByCounts[i] = 0;
    }
    
    // 统计信任和被信任的次数
    for (int i = 0; i < trustSize; i++) {
        int a = trust[i][0];
        int b = trust[i][1];
        
        trustCounts[a]++;
        trustedByCounts[b]++;
    }
    
    // 找到满足条件的人
    for (int i = 1; i <= N; i++) {
        if (trustCounts[i] == 0 && trustedByCounts[i] == N - 1) {
            return i;
        }
    }
    
    // 如果小镇法官不信任任何人，则返回 N
    if (trustSize == 0 && N > 0) {
        return N;
    }
    
    return -1;  // 没有找到小镇法官
}